1. Bitmap compression


This one is pretty involved as it switches on-the-fly.
Not straightforward but workable.


[0020EC] 20ec DD 7E 00    LD A,(IX+00h)    AF=2042 BC=1F00 DE=208D HL=20EC SP=DFE0 IX=7BEE IY=DFE2    P0=00000 P1=04000 P2=14000 [ROM]
[0020EF] 20ef DD 5E 01    LD E,(IX+01h)    AF=0F42 BC=1F00 DE=208D HL=20EC SP=DFE0 IX=7BEE IY=DFE2    P0=00000 P1=04000 P2=14000 [ROM]
[0020F2] 20f2 DD 56 02    LD D,(IX+02h)    AF=0F42 BC=1F00 DE=2000 HL=20EC SP=DFE0 IX=7BEE IY=DFE2    P0=00000 P1=04000 P2=14000 [ROM]
[0020F5] 20f5 DD 6E 03    LD L,(IX+03h)    AF=0F42 BC=1F00 DE=8800 HL=20EC SP=DFE0 IX=7BEE IY=DFE2    P0=00000 P1=04000 P2=14000 [ROM]
[0020F8] 20f8 DD 66 04    LD H,(IX+04h)    AF=0F42 BC=1F00 DE=8800 HL=2010 SP=DFE0 IX=7BEE IY=DFE2    P0=00000 P1=04000 P2=14000 [ROM]
[0020FB] 20fb DD 4E 05    LD C,(IX+05h)    AF=0F42 BC=1F00 DE=8800 HL=0110 SP=DFE0 IX=7BEE IY=DFE2    P0=00000 P1=04000 P2=14000 [ROM]
[0020FE] 20fe DD 46 06    LD B,(IX+06h)    AF=0F42 BC=1F8C DE=8800 HL=0110 SP=DFE0 IX=7BEE IY=DFE2    P0=00000 P1=04000 P2=14000 [ROM]

; Phantasy Star title logo

[002101] 2101 32 FF FF    LD (FFFFh),A     AF=0F42 BC=008C DE=8800 HL=0110 SP=DFE0 IX=7BEE IY=DFE2    P0=00000 P1=04000 P2=14000 [ROM]
[002104] 2104 CD CA 03    CALL 03CAh       AF=0F42 BC=008C DE=8800 HL=0110 SP=DFE0 IX=7BEE IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]

; _________________________________________________________________


; Bitmap decoder

[0003CA] 03ca C5          PUSH BC          AF=0F42 BC=008C DE=8800 HL=0110 SP=DFDE IX=7BEE IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]
[0003CB] 03cb D5          PUSH DE          AF=0F42 BC=008C DE=8800 HL=0110 SP=DFDC IX=7BEE IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]
[0003CC] 03cc E5          PUSH HL          AF=0F42 BC=008C DE=8800 HL=0110 SP=DFDA IX=7BEE IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]
[0003CD] 03cd F5          PUSH AF          AF=0F42 BC=008C DE=8800 HL=0110 SP=DFD8 IX=7BEE IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]
[0003CE] 03ce DD E5       PUSH IX          AF=0F42 BC=008C DE=8800 HL=0110 SP=DFD6 IX=7BEE IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]
[0003D0] 03d0 FD E5       PUSH IY          AF=0F42 BC=008C DE=8800 HL=0110 SP=DFD4 IX=7BEE IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]

[0003D2] 03d2 29          ADD HL,HL        AF=0F42 BC=008C DE=8800 HL=0110 SP=DFD2 IX=7BEE IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]
[0003D3] 03d3 29          ADD HL,HL        AF=0F40 BC=008C DE=8800 HL=0220 SP=DFD2 IX=7BEE IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]
[0003D4] 03d4 29          ADD HL,HL        AF=0F40 BC=008C DE=8800 HL=0440 SP=DFD2 IX=7BEE IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]
[0003D5] 03d5 29          ADD HL,HL        AF=0F40 BC=008C DE=8800 HL=0880 SP=DFD2 IX=7BEE IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]
[0003D6] 03d6 29          ADD HL,HL        AF=0F50 BC=008C DE=8800 HL=1100 SP=DFD2 IX=7BEE IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]
[0003D7] 03d7 22 29 C0    LD (C029h),HL    AF=0F40 BC=008C DE=8800 HL=2200 SP=DFD2 IX=7BEE IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]
[0003DA] 03da D5          PUSH DE          AF=0F40 BC=008C DE=8800 HL=2200 SP=DFD2 IX=7BEE IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]
[0003DB] 03db DD E1       POP IX           AF=0F40 BC=008C DE=8800 HL=2200 SP=DFD0 IX=7BEE IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]

; Tiles loop (C = # runs)

[0003DD] 03dd C5          PUSH BC          AF=0F40 BC=008C DE=8800 HL=2200 SP=DFD2 IX=8800 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]

; ROM source... also decoder selection

[0003DE] 03de DD 4E 00    LD C,(IX+00h)    AF=0F40 BC=008C DE=8800 HL=2200 SP=DFD0 IX=8800 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]
[0003E1] 03e1 DD 23       INC IX           AF=0F40 BC=0000 DE=8800 HL=2200 SP=DFD0 IX=8800 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]


; 4 main loops (2 bits each)

[0003E3] 03e3 06 04       LD B,04h         AF=0F40 BC=0000 DE=8800 HL=2200 SP=DFD0 IX=8801 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]
[0003E5] 03e5 11 2B C0    LD DE,C02Bh      AF=0F40 BC=0400 DE=8800 HL=2200 SP=DFD0 IX=8801 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]

; Decoder method
; - 00 = 8 $00's
; - 01 = 8 $FF's
; - 10 = RLE/LZ extended
; - 11 = 8 raw bytes

[0003E8] 03e8 CB 01       RLC C            AF=0F40 BC=0400 DE=C02B HL=2200 SP=DFD0 IX=8801 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]
[0003EA] 03ea 30 43       JR NC,042Fh      AF=0F44 BC=0400 DE=C02B HL=2200 SP=DFD0 IX=8801 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]

[0003EC] 03ec CB 01       RLC C            AF=0005 BC=0341 DE=C033 HL=FF00 SP=DFD0 IX=8802 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]
[0003EE] 03ee 38 3B       JR C,042Bh       AF=0084 BC=0382 DE=C033 HL=FF00 SP=DFD0 IX=8802 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]

; ______________________________________________________________________


; RLE/LZ decode selection

[0003F0] 03f0 DD 7E 00    LD A,(IX+00h)    AF=0084 BC=0382 DE=C033 HL=FF00 SP=DFD0 IX=8802 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]
[0003F3] 03f3 DD 23       INC IX           AF=FF84 BC=0382 DE=C033 HL=FF00 SP=DFD0 IX=8802 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]

; Lower two bits = LZ-window selection

[0003F5] 03f5 EB          EX DE,HL         AF=FF84 BC=0382 DE=C033 HL=FF00 SP=DFD0 IX=8803 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]
[0003F6] 03f6 57          LD D,A           AF=FF84 BC=0382 DE=FF00 HL=C033 SP=DFD0 IX=8803 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]
[0003F7] 03f7 E6 03       AND 03h          AF=FF84 BC=0382 DE=FF00 HL=C033 SP=DFD0 IX=8803 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]
[0003F9] 03f9 87          ADD A,A          AF=0314 BC=0382 DE=FF00 HL=C033 SP=DFD0 IX=8803 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]
[0003FA] 03fa 87          ADD A,A          AF=0600 BC=0382 DE=FF00 HL=C033 SP=DFD0 IX=8803 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]
[0003FB] 03fb 87          ADD A,A          AF=0C08 BC=0382 DE=FF00 HL=C033 SP=DFD0 IX=8803 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]
[0003FC] 03fc 5F          LD E,A           AF=1818 BC=0382 DE=FF00 HL=C033 SP=DFD0 IX=8803 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]

; LZ-window cursor

[0003FD] 03fd 7A          LD A,D           AF=1818 BC=0382 DE=FF18 HL=C033 SP=DFD0 IX=8803 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]
[0003FE] 03fe 16 00       LD D,00h         AF=FF18 BC=0382 DE=FF18 HL=C033 SP=DFD0 IX=8803 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]
[000400] 0400 FD 21 2B C0 LD IY,C02Bh      AF=FF18 BC=0382 DE=0018 HL=C033 SP=DFD0 IX=8803 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]
[000404] 0404 FD 19       ADD IY,DE        AF=FF18 BC=0382 DE=0018 HL=C033 SP=DFD0 IX=8803 IY=C02B    P0=00000 P1=04000 P2=3C000 [ROM]
[000406] 0406 EB          EX DE,HL         AF=FF00 BC=0382 DE=0018 HL=C033 SP=DFD0 IX=8803 IY=C043    P0=00000 P1=04000 P2=3C000 [ROM]

; Check RLE/LZ pattern

[000407] 0407 FE 03       CP 03h           AF=FF00 BC=0382 DE=C033 HL=0018 SP=DFD0 IX=8803 IY=C043    P0=00000 P1=04000 P2=3C000 [ROM]
[000409] 0409 38 3E       JR C,0449h       AF=FFAA BC=0382 DE=C033 HL=0018 SP=DFD0 IX=8803 IY=C043    P0=00000 P1=04000 P2=3C000 [ROM]
[00040B] 040b FE 10       CP 10h           AF=FFAA BC=0382 DE=C033 HL=0018 SP=DFD0 IX=8803 IY=C043    P0=00000 P1=04000 P2=3C000 [ROM]
[00040D] 040d 38 14       JR C,0423h       AF=FFAA BC=0382 DE=C033 HL=0018 SP=DFD0 IX=8803 IY=C043    P0=00000 P1=04000 P2=3C000 [ROM]
[00040F] 040f FE 13       CP 13h           AF=FFAA BC=0382 DE=C033 HL=0018 SP=DFD0 IX=8803 IY=C043    P0=00000 P1=04000 P2=3C000 [ROM]
[000411] 0411 38 3B       JR C,044Eh       AF=FFAA BC=0382 DE=C033 HL=0018 SP=DFD0 IX=8803 IY=C043    P0=00000 P1=04000 P2=3C000 [ROM]
[000413] 0413 FE 20       CP 20h           AF=FFAA BC=0382 DE=C033 HL=0018 SP=DFD0 IX=8803 IY=C043    P0=00000 P1=04000 P2=3C000 [ROM]
[000415] 0415 38 0C       JR C,0423h       AF=FF8A BC=0382 DE=C033 HL=0018 SP=DFD0 IX=8803 IY=C043    P0=00000 P1=04000 P2=3C000 [ROM]
[000417] 0417 FE 23       CP 23h           AF=FF8A BC=0382 DE=C033 HL=0018 SP=DFD0 IX=8803 IY=C043    P0=00000 P1=04000 P2=3C000 [ROM]
[000419] 0419 38 38       JR C,0453h       AF=FF8A BC=0382 DE=C033 HL=0018 SP=DFD0 IX=8803 IY=C043    P0=00000 P1=04000 P2=3C000 [ROM]
[00041B] 041b FE 40       CP 40h           AF=FF8A BC=0382 DE=C033 HL=0018 SP=DFD0 IX=8803 IY=C043    P0=00000 P1=04000 P2=3C000 [ROM]
[00041D] 041d 38 04       JR C,0423h       AF=FFAA BC=0382 DE=C033 HL=0018 SP=DFD0 IX=8803 IY=C043    P0=00000 P1=04000 P2=3C000 [ROM]
[00041F] 041f FE 43       CP 43h           AF=FFAA BC=0382 DE=C033 HL=0018 SP=DFD0 IX=8803 IY=C043    P0=00000 P1=04000 P2=3C000 [ROM]
[000421] 0421 38 39       JR C,045Ch       AF=FFAA BC=0382 DE=C033 HL=0018 SP=DFD0 IX=8803 IY=C043    P0=00000 P1=04000 P2=3C000 [ROM]

; ___________________________________________________________________


; Set 8-bit custom RLE decode pattern and 'new' copy byte

[000423] 0423 67          LD H,A           AF=FFAA BC=0382 DE=C033 HL=0018 SP=DFD0 IX=8803 IY=C043    P0=00000 P1=04000 P2=3C000 [ROM]
[000424] 0424 DD 6E 00    LD L,(IX+00h)    AF=FFAA BC=0382 DE=C033 HL=FF18 SP=DFD0 IX=8803 IY=C043    P0=00000 P1=04000 P2=3C000 [ROM]
[000427] 0427 DD 23       INC IX           AF=FFAA BC=0382 DE=C033 HL=FF01 SP=DFD0 IX=8803 IY=C043    P0=00000 P1=04000 P2=3C000 [ROM]
[000429] 0429 18 0A       JR 0435h         AF=FFAA BC=0382 DE=C033 HL=FF01 SP=DFD0 IX=8804 IY=C043    P0=00000 P1=04000 P2=3C000 [ROM]


; 8 raw bytes

[00042B] 042b 26 00       LD H,00h         AF=40A9 BC=03AB DE=C033 HL=E800 SP=DFD0 IX=880C IY=C02B    P0=00000 P1=04000 P2=3C000 [ROM]
[00042D] 042d 18 06       JR 0435h         AF=40A9 BC=03AB DE=C033 HL=0000 SP=DFD0 IX=880C IY=C02B    P0=00000 P1=04000 P2=3C000 [ROM]

; _________________________________________________________________


; Roll another bit

[00042F] 042f CB 01       RLC C            AF=0F44 BC=0400 DE=C02B HL=2200 SP=DFD0 IX=8801 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]

; Cache byte is $00 or $FF

[000431] 0431 9F          SBC A,A          AF=0F44 BC=0400 DE=C02B HL=2200 SP=DFD0 IX=8801 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]
[000432] 0432 6F          LD L,A           AF=0042 BC=0400 DE=C02B HL=2200 SP=DFD0 IX=8801 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]

; 8 RLEs (cached runs)

[000433] 0433 26 FF       LD H,FFh         AF=0042 BC=0400 DE=C02B HL=2200 SP=DFD0 IX=8801 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]

; _________________________________________________________________


; Init for RLE loop (8 runs)

[000435] 0435 C5          PUSH BC          AF=0042 BC=0400 DE=C02B HL=FF00 SP=DFD0 IX=8801 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]
[000436] 0436 06 08       LD B,08h         AF=0042 BC=0400 DE=C02B HL=FF00 SP=DFCE IX=8801 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]

; Load cached (RLE) byte

[000438] 0438 7D          LD A,L           AF=0042 BC=0800 DE=C02B HL=FF00 SP=DFCE IX=8801 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]

; Check decode method: Raw or RLE

[000439] 0439 CB 04       RLC H            AF=0042 BC=0800 DE=C02B HL=FF00 SP=DFCE IX=8801 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]
[00043B] 043b 38 05       JR C,0442h       AF=00AD BC=0800 DE=C02B HL=FF00 SP=DFCE IX=8801 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]

; Load raw byte

[00043D] 043d DD 7E 00    LD A,(IX+00h)    AF=008C BC=05EA DE=C02E HL=8E00 SP=DFCE IX=8808 IY=C02B    P0=00000 P1=04000 P2=3C000 [ROM]
[000440] 0440 DD 23       INC IX           AF=408C BC=05EA DE=C02E HL=8E00 SP=DFCE IX=8808 IY=C02B    P0=00000 P1=04000 P2=3C000 [ROM]

; Store byte, keep checking decoding bits

[000442] 0442 12          LD (DE),A        AF=00AD BC=0800 DE=C02B HL=FF00 SP=DFCE IX=8801 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]
[000443] 0443 13          INC DE           AF=00AD BC=0800 DE=C02B HL=FF00 SP=DFCE IX=8801 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]
[000444] 0444 10 F2       DJNZ 0438h       AF=00AD BC=0800 DE=C02C HL=FF00 SP=DFCE IX=8801 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]

; Go to next main loop

[000446] 0446 C1          POP BC           AF=00AD BC=0000 DE=C033 HL=FF00 SP=DFCE IX=8801 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]
[000447] 0447 18 31       JR 047Ah         AF=00AD BC=0400 DE=C033 HL=FF00 SP=DFD0 IX=8801 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]

; _________________________________________________________________


; Special case: 8 LZ transactions (normal)

[000449] 0449 21 00 FF    LD HL,FF00h      AF=01BB BC=020A DE=C03B HL=0008 SP=DFD0 IX=8805 IY=C033    P0=00000 P1=04000 P2=3C000 [ROM]
[00044C] 044c 18 15       JR 0463h         AF=01BB BC=020A DE=C03B HL=FF00 SP=DFD0 IX=8805 IY=C033    P0=00000 P1=04000 P2=3C000 [ROM]


; Special case: 8 LZ transactions (inversion)

[00044E] 044e 21 FF FF    LD HL,FFFFh      AF=11BB BC=013E DE=C043 HL=0008 SP=DFD0 IX=9158 IY=C033    P0=00000 P1=04000 P2=3C000 [ROM]
[000451] 0451 18 10       JR 0463h         AF=11BB BC=013E DE=C043 HL=FFFF SP=DFD0 IX=9158 IY=C033    P0=00000 P1=04000 P2=3C000 [ROM]


; Special case: load raw/LZ mixture (normal)

[000453] 0453 DD 66 00    LD H,(IX+00h)    AF=20BB BC=02AE DE=C03B HL=0000 SP=DFD0 IX=8815 IY=C02B    P0=00000 P1=04000 P2=3C000 [ROM]
[000456] 0456 2E 00       LD L,00h         AF=20BB BC=02AE DE=C03B HL=D000 SP=DFD0 IX=8815 IY=C02B    P0=00000 P1=04000 P2=3C000 [ROM]
[000458] 0458 DD 23       INC IX           AF=20BB BC=02AE DE=C03B HL=D000 SP=DFD0 IX=8815 IY=C02B    P0=00000 P1=04000 P2=3C000 [ROM]
[00045A] 045a 18 07       JR 0463h         AF=20BB BC=02AE DE=C03B HL=D000 SP=DFD0 IX=8816 IY=C02B    P0=00000 P1=04000 P2=3C000 [ROM]


; Special case: load raw/LZ mixture (inversion)

[00045C] 045c DD 66 00    LD H,(IX+00h)    AF=40BB BC=03AA DE=C033 HL=0000 SP=DFD0 IX=8862 IY=C02B    P0=00000 P1=04000 P2=3C000 [ROM]
[00045F] 045f 2E FF       LD L,FFh         AF=40BB BC=03AA DE=C033 HL=6300 SP=DFD0 IX=8862 IY=C02B    P0=00000 P1=04000 P2=3C000 [ROM]
[000461] 0461 DD 23       INC IX           AF=40BB BC=03AA DE=C033 HL=63FF SP=DFD0 IX=8862 IY=C02B    P0=00000 P1=04000 P2=3C000 [ROM]

; _________________________________________________________________


; Init LZ decoder

[000463] 0463 C5          PUSH BC          AF=01BB BC=020A DE=C03B HL=FF00 SP=DFD0 IX=8805 IY=C033    P0=00000 P1=04000 P2=3C000 [ROM]
[000464] 0464 06 08       LD B,08h         AF=01BB BC=020A DE=C03B HL=FF00 SP=DFCE IX=8805 IY=C033    P0=00000 P1=04000 P2=3C000 [ROM]

; Load byte at LZ window cursor

[000466] 0466 FD 7E 00    LD A,(IY+00h)    AF=01BB BC=080A DE=C03B HL=FF00 SP=DFCE IX=8805 IY=C033    P0=00000 P1=04000 P2=3C000 [ROM]
[000469] 0469 FD 23       INC IY           AF=01BB BC=080A DE=C03B HL=FF00 SP=DFCE IX=8805 IY=C033    P0=00000 P1=04000 P2=3C000 [ROM]

; Full bit-inversion when needed

[00046B] 046b AD          XOR L            AF=01BB BC=080A DE=C03B HL=FF00 SP=DFCE IX=8805 IY=C034    P0=00000 P1=04000 P2=3C000 [ROM]

; Decode method selection: raw or LZ

[00046C] 046c CB 04       RLC H            AF=0100 BC=080A DE=C03B HL=FF00 SP=DFCE IX=8805 IY=C034    P0=00000 P1=04000 P2=3C000 [ROM]
[00046E] 046e 38 05       JR C,0475h       AF=01AD BC=080A DE=C03B HL=FF00 SP=DFCE IX=8805 IY=C034    P0=00000 P1=04000 P2=3C000 [ROM]

; Load raw byte

[000470] 0470 DD 7E 00    LD A,(IX+00h)    AF=0080 BC=06AE DE=C03D HL=8600 SP=DFCE IX=8816 IY=C02E    P0=00000 P1=04000 P2=3C000 [ROM]
[000473] 0473 DD 23       INC IX           AF=8080 BC=06AE DE=C03D HL=8600 SP=DFCE IX=8816 IY=C02E    P0=00000 P1=04000 P2=3C000 [ROM]

; Enter data until exhausted

[000475] 0475 12          LD (DE),A        AF=01AD BC=080A DE=C03B HL=FF00 SP=DFCE IX=8805 IY=C034    P0=00000 P1=04000 P2=3C000 [ROM]
[000476] 0476 13          INC DE           AF=01AD BC=080A DE=C03B HL=FF00 SP=DFCE IX=8805 IY=C034    P0=00000 P1=04000 P2=3C000 [ROM]
[000477] 0477 10 ED       DJNZ 0466h       AF=01AD BC=080A DE=C03C HL=FF00 SP=DFCE IX=8805 IY=C034    P0=00000 P1=04000 P2=3C000 [ROM]

[000479] 0479 C1          POP BC           AF=01AD BC=000A DE=C043 HL=FF00 SP=DFCE IX=8805 IY=C03B    P0=00000 P1=04000 P2=3C000 [ROM]

; _________________________________________________________________


; Next main loop

[00047A] 047a 05          DEC B            AF=00AD BC=0400 DE=C033 HL=FF00 SP=DFD0 IX=8801 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]
[00047B] 047b C2 E8 03    JP NZ,03E8h      AF=0003 BC=0300 DE=C033 HL=FF00 SP=DFD0 IX=8801 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]

; _________________________________________________________________


; Setup VRAM address

[00047E] 047e 11 08 00    LD DE,0008h      AF=0043 BC=0000 DE=C04B HL=FF00 SP=DFD0 IX=8801 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]
[000481] 0481 4B          LD C,E           AF=0043 BC=0000 DE=0008 HL=FF00 SP=DFD0 IX=8801 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]
[000482] 0482 2A 29 C0    LD HL,(C029h)    AF=0043 BC=0008 DE=0008 HL=FF00 SP=DFD0 IX=8801 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]
[000485] 0485 F3          DI               AF=0043 BC=0008 DE=0008 HL=2200 SP=DFD0 IX=8801 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]
[000486] 0486 CD 79 23    CALL 2379h       AF=0043 BC=0008 DE=0008 HL=2200 SP=DFD0 IX=8801 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]

; Now flush to VRAM

[000489] 0489 21 2B C0    LD HL,C02Bh      AF=0043 BC=0008 DE=0008 HL=2200 SP=DFD0 IX=8801 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]
[00048C] 048c 06 04       LD B,04h         AF=0043 BC=0008 DE=0008 HL=C02B SP=DFD0 IX=8801 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]
[00048E] 048e E5          PUSH HL          AF=0043 BC=0408 DE=0008 HL=C02B SP=DFD0 IX=8801 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]

; Note the tile format here (4 top-down x 8 left-right)

[00048F] 048f 7E          LD A,(HL)        AF=0043 BC=0408 DE=0008 HL=C02B SP=DFCE IX=8801 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]
[000490] 0490 D3 BE       OUT (BEh),A      AF=0043 BC=0408 DE=0008 HL=C02B SP=DFCE IX=8801 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]
[000492] 0492 19          ADD HL,DE        AF=0043 BC=0408 DE=0008 HL=C02B SP=DFCE IX=8801 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]
[000493] 0493 10 FA       DJNZ 048Fh       AF=0040 BC=0408 DE=0008 HL=C033 SP=DFCE IX=8801 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]

[000495] 0495 E1          POP HL           AF=0040 BC=0008 DE=0008 HL=C04B SP=DFCE IX=8801 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]
[000496] 0496 23          INC HL           AF=0040 BC=0008 DE=0008 HL=C02B SP=DFD0 IX=8801 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]
[000497] 0497 0D          DEC C            AF=0040 BC=0008 DE=0008 HL=C02C SP=DFD0 IX=8801 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]
[000498] 0498 20 F2       JR NZ,048Ch      AF=0002 BC=0007 DE=0008 HL=C02C SP=DFD0 IX=8801 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]

[00049A] 049a FB          EI               AF=0042 BC=0000 DE=0008 HL=C033 SP=DFD0 IX=8801 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]
[00049E] 049e 01 20 00    LD BC,0020h      AF=0042 BC=0000 DE=0008 HL=2200 SP=DFD0 IX=8801 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]
[0004A1] 04a1 09          ADD HL,BC        AF=0042 BC=0020 DE=0008 HL=2200 SP=DFD0 IX=8801 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]
[0004A2] 04a2 22 29 C0    LD (C029h),HL    AF=0040 BC=0020 DE=0008 HL=2220 SP=DFD0 IX=8801 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]
[0004A5] 04a5 C1          POP BC           AF=0040 BC=0020 DE=0008 HL=2220 SP=DFD0 IX=8801 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]

; Determine # tiles left to decompress

[0004A6] 04a6 0B          DEC BC           AF=0040 BC=008C DE=0008 HL=2220 SP=DFD2 IX=8801 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]
[0004A7] 04a7 78          LD A,B           AF=0040 BC=008B DE=0008 HL=2220 SP=DFD2 IX=8801 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]
[0004A8] 04a8 B1          OR C             AF=0040 BC=008B DE=0008 HL=2220 SP=DFD2 IX=8801 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]
[0004A9] 04a9 C2 DD 03    JP NZ,03DDh      AF=8B8C BC=008B DE=0008 HL=2220 SP=DFD2 IX=8801 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]

; Done

[0004AC] 04ac DD 22       LD (****h),IX    AF=0044 BC=0000 DE=0008 HL=3380 SP=DFD2 IX=8F02 IY=C03B    P0=00000 P1=04000 P2=3C000 [ROM]
[0004B0] 04b0 FD E1       POP IY           AF=0044 BC=0000 DE=0008 HL=3380 SP=DFD2 IX=8F02 IY=C03B    P0=00000 P1=04000 P2=3C000 [ROM]
[0004B2] 04b2 DD E1       POP IX           AF=0044 BC=0000 DE=0008 HL=3380 SP=DFD4 IX=8F02 IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]
[0004B4] 04b4 F1          POP AF           AF=0044 BC=0000 DE=0008 HL=3380 SP=DFD6 IX=7BEE IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]
[0004B5] 04b5 E1          POP HL           AF=0F42 BC=0000 DE=0008 HL=3380 SP=DFD8 IX=7BEE IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]
[0004B6] 04b6 D1          POP DE           AF=0F42 BC=0000 DE=0008 HL=0110 SP=DFDA IX=7BEE IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]
[0004B7] 04b7 C1          POP BC           AF=0F42 BC=0000 DE=8800 HL=0110 SP=DFDC IX=7BEE IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]
[0004B8] 04b8 C9          RET              AF=0F42 BC=008C DE=8800 HL=0110 SP=DFDE IX=7BEE IY=DFE2    P0=00000 P1=04000 P2=3C000 [ROM]


So we have a complicated algorithm.
Strictly speaking it's not LZ/RLE but similar in principle.

We decode tile-by-tile in 4 8-byte blocks.

Title goes from: $3C800-3CF01 = $702 bytes --> $1180 bytes = 40% reduction.

$231C0-23FFF = free. More than lots of space here.
$3F850-3FFFF = free. Enough expansion here too.

Current compressor comes up $702 bytes. Different encoding algorithm but same results.